/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gamebook;

import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

/**
 *
 * @author JAVA
 */
public class Utilidades {

    public static boolean esFechaValida(int dia, int mes, int anyo) {
        boolean ret = true;
        switch (mes) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                if (dia > 31) {
                    ret = false;
                }
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                if (dia > 30) {
                    ret = false;
                }
                break;
            case 2:
                if (dia > 30) {
                    ret = false;
                } else if (dia == 29) {
                    if ((anyo % 4 == 0) && (anyo % 100 != 0)
                            || (anyo % 400 == 0)) {
                        // year div by 4 and ((not div by 100) or div by 400) ->ok
                        ret = true;
                    } else {
                        ret = false;
                    }
                }
                break;
        }

        return ret;
    }

    public static File dameRuta(String ruta) {
        File rutaFile = new File(ruta); //Creamos un File con la ruta
        if (!rutaFile.exists()) {
            rutaFile.mkdir();
        }
        return rutaFile;
    }

    public static String primeraMayuscula(String cadena) {
        String resultado = "";

        String[] palabra = cadena.split(" ");
        for (String p : palabra) {
            if (p.length() > 0) {
                p = p.substring(0, 1).toUpperCase() + p.substring(1).toLowerCase();
                resultado += p + " ";
            }
        }
        return resultado;
    }
    
    /**
     * Redimensiona una imagen JPG y la guarda con otro nombre en otro sitio y con el nuevo tamaño
     * @param String originalRuta Imagen original
     * @param int nuevaAncho ancho de la imagen original
     * @param int nuevaAlto
     * @param String nuevaRuta Imagen nuevo
     */
    public static void redimensionar(File originalFile, int nuevaAncho, int nuevaAlto, File nuevaFile) {
        double nuevaRelacion = (double) nuevaAncho / (double) nuevaAlto;

        try {
            //Obtenemos la imagen original, sus tamaño, tipo y relación de aspecto
            BufferedImage original = ImageIO.read(originalFile);
            //int originalTipo = original.getType();
            int originalTipo = original.getType() == 0 ? BufferedImage.TYPE_INT_ARGB : original.getType();
            int originalAncho = original.getWidth();
            int originalAlto = original.getHeight();
            double originalRelacion = (double) originalAncho / (double) originalAlto;

            //Esta será la imagen nueva
            BufferedImage nueva = new BufferedImage(nuevaAncho, nuevaAlto, originalTipo);
            //Obtenemos un contexto gráfico para pintar en la imagen nueva
            Graphics2D graphic = nueva.createGraphics();

            if (nuevaRelacion > originalRelacion) {
                //Si la relación nueva es mayor que la relación original
                //-Pintamos la imagen con el alto nuevo
                //-Calculamos el ancho según la relación original
                //-Centramos horizontalmente porque sobrará espacio
                int centrado = (nuevaAncho - (int) (nuevaAlto * originalRelacion)) / 2;
                graphic.drawImage(original, centrado, 0, (int) (nuevaAlto * originalRelacion), nuevaAlto, null);
            } else {
                //Si la relación nueva es menor que la relación original
                //-Pintamos la imagen con el ancho nuevo
                //-Calculamos el alto según la relación original
                //-Centramos verticalmente porque sobrará espacio
                int centrado = (nuevaAlto - (int) (nuevaAncho / originalRelacion)) / 2;
                graphic.drawImage(original, 0, centrado, nuevaAncho, (int) (nuevaAncho / originalRelacion), null);
            }

            //Liberamos el contexto gráfico que no nos hace más falta
            graphic.dispose();
            //Guardamos la nueva imagen en la ruta requerida
            ImageIO.write(nueva, "jpg", nuevaFile);

        } catch (Exception ex) {
            System.out.println(ex.toString());
        }
    }
    
}